home *** CD-ROM | disk | FTP | other *** search
- .ll 91
- .pl 65
- .he KOMPLEXE.ACC \d
- .n4
- .fo # (c) 1991 Lothar Buchen, Wuppertal
- ' ==============================================================================
- '
- ' Chemcalc
- '
- ' Modul: Komplexe
- '
- ' Demo-ACC zur Demonstration der Übertragung von Formeln
- '
- ' V 0.1
- '
- ' (c) 1991 Lothar Buchen, Wuppertal
- '
- ' Stand: 17. 11. 1991
- '
- ' in GFA-Basic V 3.50
- '
- ' ==============================================================================
- '
- $m 1000
- $s<
- $f<
- speicher_min%=FRE(0)
- speicher_max%=FRE(0)
- ap_id&=APPL_INIT()
- DIM message&(63),qu&(7)
- ARRAYFILL message&(),-1
- ' ============================== Message-System ================================
- ' Aufbau: Ungerade Message-Nummern: keine Antwort
- ' Gerade Message-Nummern: Antwort folgende ungerade Nummer
- '
- ' ------------------------------ Message-Format: -------------------------------
- ' message&(0) Nachrichtennummer
- ' message&(1) Absender
- ' message&(2) Zusätzliche Bytes der Nachricht; bei Standardlänge von 16 Bytes 0
- ' message&(3) Nicht benutzt (bei $6603)
- ' message&(4) "
- ' message&(5) "
- ' message&(6) "
- ' message&(7) "
- ' message&(8) - message&(63) Formel
- ' ------------------- Zur Zeit benutzte Nachrichtennummern ---------------------
- ' message&(0) = $6401 Quittierung einer Nachricht (wird immer gesendet)
- ' message&(0) = $64FF Fataler Fehler ist aufgetreten, ACC meldet sich ab
- ' message&(0) = $6502 Fließkommazahl wird angefordert
- ' message&(0) = $6503 Fließkommazahl wird gesendet
- ' message&(0) = $6504 - $65FF noch nicht benutzt
- ' message&(0) = $6602 Formel wird angefordert
- ' message&(0) = $6603 Formel wird gesendet
- ' message&(0) = $6604 - $66FF noch nicht benutzt
- ' ------------------------------------------------------------------------------
- shadowed|=&H20
- disabled|=&H8
- meldung$="Komplex-Formeln 0.1, (c) Lothar Buchen, Wuppertal"
- PRINT "Installiere "+meldung$+"..."
- chemie.rsc$="KOMPLEXE.RSC"
- eintrag$="Komplexe"
- m_reg$=SPACE$(LEN(eintrag$)+4)
- ~@center(eintrag$,m_reg$)
- '
- IF RSRC_LOAD(chemie.rsc$)=0
- PRINT chemie.rsc$+" fehlt!"
- IF ap_id&>0
- DO ! Falls das RSC-File nicht zu finden ist,
- ~EVNT_TIMER(-1) ! dann einfach lange darauf warten,
- LOOP ! nichts zu tun.
- ELSE
- END
- ENDIF
- ENDIF
- '
- IF {BASEPAGE+36}=0
- me_id&=MENU_REGISTER(ap_id&,m_reg$)
- DO
- ~EVNT_MESAG(0)
- FOR i|=0 TO 7
- message&(i|)=MENU(i|+1)
- NEXT i|
- message&=message&(0)
- SELECT message& ! Nachricht auswerten
- CASE 40,&H6602 ! 40 vom Desktop, Rest für Spezielles
- SELECT message&
- CASE &H6602
- applikation&=message&(1) ! Wohin geht die Bestätigung
- qu&(0)=&H6401 ! Anfrage bestätigen
- qu&(1)=ap_id& ! Absender von KOMPLEXE
- qu&(3)=1 ! Frage akzeptiert
- ~APPL_WRITE(applikation&,16,V:qu&(0)) ! Und abschicken
- ENDSELECT
- ~WIND_UPDATE(3) ! Mauskontrolle übernehmen
- hole_daten(ergebnis$) ! Daten holen
- ~WIND_UPDATE(2) ! Mauskontrolle abgeben
- IF message&(0)=&H6602 ! Formel angefordert
- message&(0)=&H6603 ! Nummer der Antwort
- message&(1)=ap_id& ! Absender
- message&(2)=LEN(ergebnis$) ! Länge der Formel
- BMOVE V:ergebnis$,V:message&(8),LEN(ergebnis$)
- ~APPL_WRITE(applikation&,16+LEN(ergebnis$),V:message&(0)) ! Und abschicken
- ENDIF
- ENDSELECT
- ergebnis$=""
- meldung$=""
- ARRAYFILL message&(),-1
- LOOP
- ELSE
- DEFMOUSE 0
- DEFFILL 1,2,8
- PBOX 0,0,WORK_OUT(0),22
- GRAPHMODE 3
- DEFTEXT 1,16,0,13
- TEXT 80,17,480,"Komplex-Formeln V 0.1 (c) 1991 Lothar Buchen"
- GRAPHMODE 1
- DEFFILL 1,2,4
- PBOX 0,22,WORK_OUT(0),WORK_OUT(1)
- hole_daten(ergebnis$)
- ~RSRC_FREE()
- ENDIF
- > PROCEDURE hole_daten(VAR daten$)
- ' ==========================================================================
- '
- ' Objektnummern der Resourcedatei A:\KOMPLEXE.RSC
- '
- ' Anzahl der Objekte: 17
- '
- ' Anzahl der benannten Objekte: 9
- '
- ' Anzahl der Bäume: 1
- '
- ' TEDINFO-Strukturen: 8
- '
- ' ICONBLK-Strukturen: 0
- '
- ' BITBLK-Strukturen: 0
- '
- ' Freie Strings: 0
- '
- ' Freie Images: 0
- '
- ' ==========================================================================
- '
- LET komplexe&=0 ! Baum 0 = Dialog OB_FLAGS OB_STATE
- LET en&=3 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET tren&=5 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET tta&=7 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET tan&=9 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET dien&=11 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET glyme&=13 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET ntah3&=15 ! OBJEKT = BOXTEXT 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
- LET ok&=16 ! OBJEKT = BUTTON 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1
- ' ==========================================================================
- '
- j&=2
- ~RSRC_GADDR(0,komplexe&,komplexe.adr%)
- ~FORM_CENTER(komplexe.adr%,x1&,y1&,b1&,h1&)
- ~FORM_DIAL(0,0,0,0,0,x1&,y1&,b1&,h1&)
- ~FORM_DIAL(1,0,0,0,0,x1&,y1&,b1&,h1&)
- ~OBJC_DRAW(komplexe.adr%,0,5,x1&,y1&,b1&,h1&)
- ex.objc&=FORM_DO(komplexe.adr%,0)
- ~OBJC_CHANGE(komplexe.adr%,ex.objc&,0,x1&,y1&,b1&,h1&,shadowed|,0)
- FOR i&=3 TO 15 STEP 2
- IF BTST(OB_STATE(komplexe.adr%,i&),0)
- OB_STATE(komplexe.adr%,i&)=normal|
- daten$=CHAR{{OB_SPEC(komplexe.adr%,i&)}}
- ENDIF
- NEXT i&
- ~FORM_DIAL(2,0,0,0,0,x1&,y1&,b1&,h1&)
- ~FORM_DIAL(3,0,0,0,0,x1&,y1&,b1&,h1&)
- RETURN
- > FUNCTION center(zentrier$,VAR org$)
- ' ===========================================================================
- ' Zentriert des String zentrier$ in den String org$
- ' Rückgabe: -1, wenn gelungen
- ' 0, wenn zentrier$ > org$
- ' ===========================================================================
- '
- IF LEN(zentrier$)<=LEN(org$) ! Wenn zu zentrierender String kürzer
- MID$(org$,LEN(org$)/2+1-LEN(zentrier$)/2)=zentrier$
- RETURN TRUE ! Zentrierung gelungen
- ELSE ! String zu lang
- RETURN FALSE ! Zentrierung geht nicht
- ENDIF
- ENDFUNC
-